package com.coinland.study.base;

import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.WindowManager;

import com.coinland.study.R;
import com.coinland.study.bean.DocumentBean;
import com.coinland.study.util.StatusBarUtil;
import com.coinland.study.window.SPUtils;
import com.coinland.study.window.WindowUtil;

import butterknife.ButterKnife;
import butterknife.Unbinder;


/**
 * 类描述:  Activity 基类
 * 创建人:  shenZ
 * 创建时间: 2019/7/22
 * 联系方式: 252079249@qq.com
 * 修改时间: 2019/7/22
 */
public abstract class BaseActivity extends AppCompatActivity {


    private Unbinder unbinder;
    public SPUtils<DocumentBean> spUtils = new SPUtils<DocumentBean>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(this.getLayoutId());
        unbinder = ButterKnife.bind(this);
        initView();

        //当FitsSystemWindows设置 true 时，会在屏幕最上方预留出状态栏高度的 padding
        StatusBarUtil.setRootViewFitsSystemWindows(this, true);
        //设置状态栏透明
        StatusBarUtil.setTranslucentStatus(this);
        //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
        //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
        if (StatusBarUtil.setStatusBarDarkTheme(this, false)) {
            //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
            //这样半透明+白=灰, 状态栏的文字能看得清
            StatusBarUtil.setStatusBarColor(this, 0x00000000);
        }
        // 设置状态栏颜色
        StatusBarUtil.setStatusBarColor(this, getResources().getColor(R.color.colorPrimary));
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            // 开始窗口缩小动画
            WindowUtil.getInstance().startScaleAnim();
        }
    }

    /**
     * 设置添加屏幕的背景透明度
     * <p>
     * 屏幕透明度0.0-1.0 1表示完全不透明
     */
    public void addMaskView() {
        WindowManager.LayoutParams lp = this.getWindow().getAttributes();
        lp.alpha = 0.7f;
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        this.getWindow().setAttributes(lp);
    }

    public void removeMaskView() {
        WindowManager.LayoutParams lp = this.getWindow().getAttributes();
        lp.alpha = 1f;
        this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        this.getWindow().setAttributes(lp);
    }


    /**
     * 设置布局
     *
     * @return
     */
    public abstract int getLayoutId();

    /**
     * 初始化视图
     */
    public abstract void initView();


    @Override
    protected void onDestroy() {
        super.onDestroy();
        unbinder.unbind();
    }
}
